1. Field of Use
The present invention relates to Internet applications and more specifically, to methods and systems for providing efficient communications between Web browser and server systems.
2. Description of Related Art
Significant changes are being made by companies in how they communicate with their customers and the types of services offered due to Web technology. One such change has been the use of a Web browser as a common front end to a mainframe or an enterprise system. In the case of IBM hosts, two basic methods have been utilized to give browsers access to such systems. These methods have been generically called native 3270 and Hypertext Markup Language (HTML) conversion. In the native 3270 method, a special browser is utilized that contains some form of built-in 3270 terminal emulator software and applets that know what to do with the 3270 data streams once they reach the desktop system. In the conversion method, 3270 formatted screens are converted into HTML format and posted to a Web server. The converted screens can then be viewed using any browser. These approaches are discussed in greater detail in an article entitled xe2x80x9cHow To Put Mainframes on the Webxe2x80x9d by Salvatore Salamone published in the June 1996 issue of Byte Magazine.
A disadvantage of the conversion approach is that it may not offer acceptable performance, throughput and response time in a high volume transaction environment. The reason is that the message is translated in a Web server extension and possibly in an intermediate application. Additionally, the message is forced to be routed through several applications and through intermediate applications. To overcome these disadvantages, one system employs an applet that supports mapping screen images associated with a transaction processing application to a modern, intuitive Graphical User Interface (GUI). This eliminates the need for intermediate message translation by having the browser application applet generate and process messages that are understood by the mainframe application. The applet also translates replies received from the application screen image format into a format that can be presented to and understood by the user. This approach is described in the copending patent application entitled xe2x80x9cMethod for Reducing Message Translation and Traffic Through Intermediate Applications and Systems in an Internet Applicationxe2x80x9d, Ser. No. 08/868,178, filed on Jun. 3, 1997 now U.S. Pat. No. 6,067,579 and assigned to the same assignee as named herein.
While the above approach improves performance by eliminating the need for intermediate message translation, it is specifically designed to operate with IBM mainframe hosts. Further, since the approach utilizes applets, it requires that the applet and HTML page be downloaded from a server over a non-persistent connection. The applet when executed within the browser is required to open a persistent connection back to the server. Hence, this approach necessitates the establishment of both persistent and non-persistent connections. Further, this approach still is quite time consuming and only performant when the ratio of persistent (applet to server) to non-persistent (HTML page and applet loading) traffic is high. However, even in those cases, the approach still requires that time be expended in establishing additional connections.
As well known in the art, in the classical client/server model, connections between client and application servers remain open until the client logs off the system. By contrast, in the Web environment, there is no mechanism provided for keeping the client-to-server connection open. Each time a new page is requested, the user, Web server and additional processing must reidentified or reinitialized. The reason is that the Web browser is xe2x80x9cstatelessxe2x80x9d. This xe2x80x9cstatelessnessxe2x80x9d makes it difficult to create Web-based applications requiring multiform client-to-server interactions.
In Web-enabled client/server tools, state and session is usually stored in client-side xe2x80x9ccookiexe2x80x9d files or hidden fields in HyperText Markup Language (HTML) forms. In Java application server environments, state and session management information is typically stored and managed on the server. Some server products make use of a xe2x80x9ccontextxe2x80x9d pool. When transactions are begun, the Web server generates a unique process identifier that is maintained with state information on the server in a xe2x80x9ccontextxe2x80x9d pool. Additionally, the process ID (or context ID) is embedded in the HTML passed along to the client, along with other state information. While state information may change during the course of a session, the process ID remains constant until the session terminates and the ID is discarded or returned to the context pool for reuse. These approaches can be viewed as server based approaches.
Another server based approach provides for retaining mainframe connection information on a web server that locates a user""s session when the browser reconnects and delivers the input to the mainframe application being run on the associated mainframe or legacy system. An example of this approach is the GWEB product developed by Gallagher and Robertson described at their website at gar.no/gweb/.
The combination of process IDs and storage of state information in a context pool is described in such server based approaches as allowing the execution environment of Java application servers to track the states of numerous clients connected to the Web server. In addition, it allows users to return to Web pages and view them in the state in which they left them. Further, it also ensures that a session is active during the user""s entire interaction with the application and keeps track of the state of the client""s interaction, as well as any transactions that are in progress, making it possible to commit and roll back operations. For a further discussion of Java application servers, reference may be made to the article entitled xe2x80x9cSelecting Java App Serversxe2x80x9d by Dan Kara published in the June 1998 issue of Object Magazine.
The above approaches place the burden on the server system to generate and manage the use of such state information. More importantly, since the use of such state information does not control the establishment of connections, it does not necessarily reduce the traffic on the particular internetwork over which client and server systems communicate.
To reduce traffic, another prior art system makes an on-line transaction processing system accessible to Web browsers by establishing a predetermined plurality of transaction gateway clients to receive HTTP requests that are received by a Web server from the Web browsers. Concurrent processing of multiple transaction requests from the Web browsers is performed by the plurality of transaction gateway clients. Each transaction gateway client pre-establishes a static connection with the on-line transaction processing system. The pre-established connection allows requests from the Web browsers to be quickly routed to the transaction processing system. The gateway client translates between HTTP formatted requests from the Web browsers and the request format expected by the on-line transaction processing system. This system is described in further detail, in U.S. Pat. No. 5,754,772 that issued on May 19, 1998.
While the system provides access to a mainframe host, the system has to be able to pre-allocate the required number of static connections and gateway clients beforehand making it more difficult for the system to respond to dynamic changes in operations. Further, the system must expend time in translating requests into the format expected by the on-line transaction processing system.
Another relevant prior art approach utilizes a server and a web browser terminal emulator for providing a persistent connection to a legacy host system. A computer network environment allows connection of a client system to a legacy host system using such server system. The server system executes a client thread under a server. The client thread is operable to communicate with the legacy host system across a persistent TCP/IP socket connection. The computer network environment further includes a client system executing an applet process under a web server. The applet process is operable to communicate with the client thread across another persistent TCP/IP socket connection and is operable to provide a terminal session to a user of the client system. This approach is described in U.S. Pat. No. 5,754,830 issued on May 19, 1998. The main disadvantages of this approach pertain to requiring the loading of an applet and the inclusion of a web/emulation server.
In addition to the above, it has been found that substantial time is normally expended in dynamically opening and closing persistent connections for initiating and terminating active sessions. This can give rise to additional delays. One prior art call messaging system employs a session pool containing all the sessions executing in a given application. By grouping sessions into pools, multiple callers can simultaneously access an application while another group of callers can access a different application on another pool. The details of this system are disclosed in U.S. Pat. No. 5,355,406 that issued on Oct. 11, 1994.
Another prior art system includes as part of the system""s operating system, a virtual machine (VM) that allocates and manages system resources for agents and assistants. According to the patent, to speed up the allocation of sessions, the VM keeps a session pool containing sessions that are not yet assigned to users and allocates sessions from the session pool in response to incoming calls. Each session in the pool is for a specific type of agent. This system is disclosed in U.S. Pat. No. 5,652,789.
A further prior art distributed data processing system that detects and resolves resource deadlocks utilizes session managers for maintaining session pools defined as data structures containing information about particular sessions. This system is disclosed in U.S. Pat. No. 5,459,871.
While the above systems utilize session pools, they are used for tracking different applications, specific type of agents or for resolving resource deadlocks. None of the systems are directed to handling client-server communications on an internetwork such as the xe2x80x9cInternetxe2x80x9d or xe2x80x9cworldwide webxe2x80x9d. Further, none of the cited prior art patents that utilize session pools are concerned with delays in establishing persistent connections.
Accordingly, it is an object of the present invention to make reduce delays in establishing communications sessions between a Web browser and a server persistent without having to utilize static connections.
The above objects are achieved in a preferred embodiment of the present invention that utilizes xe2x80x9csession poolsxe2x80x9d for processing requests generated by a user of a client system for accessing facilities of one or more server systems through a communications network. The client system includes a high performance gateway component that operates in conjunction with a standard browser component. In the preferred embodiment, the gateway component is installed on the same client system or on a client workstation system. The gateway component manages the establishment of persistent sessions in response to client requests and maintains information uniquely identifying existing persistent sessions opened between the client system and the server systems.
In accordance with the present invention, the client side capabilities are enhanced through the inclusion of such a gateway component that establishes and manages pre-established xe2x80x9csession poolsxe2x80x9d. The gateway component operatively couples to the standard browser component through a standard browser interface. More specifically, the browser component and gateway component communicate using standard xe2x80x9cstatelessxe2x80x9d HTTP protocols over a standard browser interface. The gateway component operatively couples to each of the server systems through an intemetwork (e.g. Internet). In the preferred embodiment, the gateway component communicates with each server system through several layers of protocols to obviate the need to develop additional protocol software for running existing server applications. The protocols used in the preferred embodiment are HTTP, DSA and TCP/IP.
According to the teachings of the present invention, a session connection can be taken from a pre-established session pool table structure instead of creating a new session connection and incurring the associated overhead. The decision to use a preexisting session connection from a session pool or to create a new session connection is based on an indicator value (i.e., context field) contained in the URL. If the context field of the URL contains a value of zero, the gateway component creates a new session connection as described in the referenced parent patent application. The gateway component opens a new session connection to the server system and records the session information as an entry in a persistent session table (PST) component maintained by the gateway component. If the context field equals the predetermined value (i.e., equal to 1), the gateway component takes a session connection entry from the session pool table structure, if one is available and transfers the entry to the PST component. Thereafter, the gateway component initiates normal reopen operations for the existing session connection.
All of the session connections in each session pool table structure have the same endpoint so that persistent session connections from a session pool can be used interchangeably. Multiple session pools are established for connecting the gateway component to multiple endpoints. For example, all the session connections for one enterprise server (e.g. server A) will be contained in one session pool whereas all the session connections for another server (e.g. server B) will be contained in another session pool. In the preferred embodiment, the host address portion of the URL is used to select the appropriate session pool.
In greater detail, the gateway component through an initialization process establishes a set of sessions entries organized into a session pool table structure for each unique end-point (e.g. each host/enterprise server system to be accessed). Also, a master session pool table structure is established that contains session pool key index values for locating each of the pre-established session pool table structures. Such session pool table structures are located by the host address portion of the URL that serves as a key to select the appropriate session pool table index value from the master session pool table structure.
The numbers of initial and maximum persistent session connections are programmable. That is, the initial and maximum session connections are established through a configuration file or from a command line or provided through an administrative page. The initial number of session connections corresponds to the number of session connections that the gateway component creates per session pool. As indicated, multiple session pools are created in accordance with the number of endpoints. The maximum value corresponds to the maximum number of session connections that can be in a session pool. Session connections that are otherwise eligible to be returned to a session pool are discarded if the maximum value for that pool has been met or exceeded. During operation, each session pool connection entry as it is being created is marked as xe2x80x9csharedxe2x80x9d. This allows the session connection to be returned to the session pool when the session connection is logically closed.
As described in the referenced parent patent application, the server system""s response to an initial request from the gateway component following the establishment of the new persistent connection generates a HTML page with a BASE tag value and also communicates the base value to the gateway component that stores it as part of the PST entry. Relative links in the new HTML page, when activated, are built by the browser incorporating the new BASE value which results in a URL containing the new base value being used on any subsequent requests which uses these links. The BASE value in the URL enables the gateway component to locate the connection, which enables the use of an established persistent connection throughout a session.
The arrangement of the present invention improves system performance by providing xe2x80x9cclient sidexe2x80x9d controlled persistent session pool connections. This eliminates the need to continuously establish new persistent connection sessions each time the xe2x80x9cstatelessxe2x80x9d browser component initiates a request. Further, the invention accomplishes this by extending the functionality of the client system by the addition of the gateway component thereby relieving the server system from the burden of having to establish and control persistent connections.
Thus, in accordance with the teachings of the present invention, the gateway component of the preferred embodiment by including the capability of enabling use of xe2x80x9csession poolsxe2x80x9d can immediately establish new persistent session connections with a number of different host (server) systems in response to a browser component generating a URL specifying a new session connection. This results in improved performance.
As discussed, the gateway component through an initialization process establishes a plurality of persistent session connections. In the preferred embodiment, this is accomplished through the use of an administrative page that can be tailored by an administrator or user using the client browser component to facilitate configuration of session pools.
In accordance with the teachings of the present invention, the above persistent session pool capabilities are invoked by the browser component by the same basic URL mechanism. As discussed, the URL of the preferred embodiment includes a context field that can be coded to contain a predetermined value (i.e., =1) that enables a user to designate when session pooling is to take place . For example, a user may elect not to enable the session pooling because of not wanting to share a common persistent connection for reasons of maintaining security.
The gateway component of the present invention requires no changes to the standard browser system. The gateway component in the preferred embodiment is implemented as a plurality of class objects that can run on the virtual machine included as part of the standard browser and utilize standard Java library routines for establishing and maintaining persistent connections. Hence, the present invention is able to maximize the use of capabilities included with a standard browser.
Further, the present invention enhances performance obtained through the use of session pools by coding all of the pertinent connection information and the selection of session pools into the URL. This avoids unnecessary scanning operations for detecting xe2x80x9ccookiesxe2x80x9d in HTTP headers and hidden form fields in HTML document pages. In addition, since the URL does not point to an actual file system directory, it is possible to have a unique URL for every persistent connection. Thus, the gateway component is able to maintain persistent connections through the use of session pools while at the same time conforming to the requirements of the HTTP stateless protocol.
It will be noted that the term xe2x80x9cgatewayxe2x80x9d has been used in referring to the access mechanism of the present invention. In accordance with the teachings of the present invention, the term xe2x80x9csessionxe2x80x9d refers to the persistent session logical connection established between the gateway component and a server system at a particular endpoint for transferring HTTP browser requests.